package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc ImplementTargetInitializationReqDto
 * @使用场景
 */
@Data
public class ImplementTargetInitializationReqDto
  extends BaseDto
  implements Serializable {

  /**
   * 高/中/基层操作场景 TOP:高层 MID:中层 BASIC:基层
   */
  @NotNull(message = "高/中/基层操作场景不能为空")
  @ApiModelProperty("高/中/基层操作场景")
  private String batchOperateScene;

  /**
   * 指标名称
   */
  @NotNull(message = "指标名称不能为空")
  @ApiModelProperty("指标名称")
  private String objectiveName;

  /**
   * 指标标识
   */
  @NotNull(message = "指标标识不能为空")
  @ApiModelProperty("指标标识")
  private String objectiveCode;

  /**
   * 建设目标描述
   */
  @ApiModelProperty("建设目标描述")
  private String targetsIntroduce;

  /**
   * 详细介绍描述
   */
  @ApiModelProperty("详细介绍描述")
  private String detailedIntroduce;

  /**
   * 备注
   */
  @ApiModelProperty("备注")
  private String remarks;

  /**
   * 层级
   */
  @NotNull(message = "层级不能为空")
  @ApiModelProperty("层级")
  private Long levelNumber;

  /**
   * 排序
   */
  @NotNull(message = "排序不能为空")
  @ApiModelProperty("排序")
  private Long orderNumber;

  /**
   * 指标汇报对象设置项编码 PRIMARY_TASK:一级建设任务 SECONDARY_TASK:二级建设任务 PRIMARY_OBSERVATION_POINT:二级以下建设任务或一级观测点 SECONDARY_OBSERVATION_POINT:二级观测点 OTHER_OBSERVATION_POINT:二级以下观测点
   */
  @NotNull(message = "指标汇报对象设置项编码不能为空")
  @ApiModelProperty("指标汇报对象设置项编码")
  private String reportObjectSetCode;

  /**
   * 责任主体类型 PERSONAL:个人 DEPT:部门
   */
  @NotNull(message = "责任主体类型不能为空")
  @ApiModelProperty("责任主体类型")
  private String respBodyType;

  /**
   * 目标类型 PERSON_LIABLE:团队目标 INITIATOR:个人目标 PARTICIPANTS:111111协同目标
   */
  @NotNull(message = "目标类型不能为空")
  @ApiModelProperty("目标类型")
  private String targetType;

  /**
   * 是否用于一级部门 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否用于一级部门不能为空")
  @ApiModelProperty("是否用于一级部门")
  private String isUseFirstDept;

  /**
   * 是否末级指标 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否末级指标不能为空")
  @ApiModelProperty("是否末级指标")
  private String isLastObjective;

  /**
   * 归属父级指标ID
   */
  @ApiModelProperty("归属父级指标ID")
  private String parentObjectiveId;

  /**
   * 归属父级目标分类ID
   */
  @ApiModelProperty("归属父级目标分类ID")
  private String parentTargetCategoryId;

  /**
   * 冗余一级指标ID
   */
  @ApiModelProperty("冗余一级指标ID")
  private String rootObjectiveId;

  /**
   * 冗余一级目标分类ID
   */
  @NotNull(message = "冗余一级目标分类ID不能为空")
  @ApiModelProperty("冗余一级目标分类ID")
  private String rootTargetCategoryId;

  /**
   * 关联末级目标分类ID
   */
  @NotNull(message = "关联末级目标分类ID不能为空")
  @ApiModelProperty("关联末级目标分类ID")
  private String correlationLastTargetCatId;

  /**
   * 冗余指标模板ID
   */
  @NotNull(message = "冗余指标模板ID不能为空")
  @ApiModelProperty("冗余指标模板ID")
  private String objectiveTemplateId;

  /**
   * 冗余指标模板类型 QUALITATIVE:定性 RATION:定量
   */
  @NotNull(message = "冗余指标模板类型不能为空")
  @ApiModelProperty("冗余指标模板类型")
  private String objectiveType;

  /**
   * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
   */
  @NotNull(message = "冗余指标业务类型不能为空")
  @ApiModelProperty("冗余指标业务类型")
  private String targetValueType;

  /**
   * 冗余是否有目标值 TRUE:是 FALSE:否
   */
  @ApiModelProperty("冗余是否有目标值")
  private String isUseTargetValue;

  /**
   * 冗余是否左侧比例型 TRUE:是 FALSE:否
   */
  @ApiModelProperty("冗余是否左侧比例型")
  private String isLeft;

  /**
   * 冗余单位
   */
  @ApiModelProperty("冗余单位")
  private String unit;

  /**
   * 冗余数字单位
   */
  @ApiModelProperty("冗余数字单位")
  private Double digitalUnit;

  /**
   * 计算数据来源 MANUAL_FILLING:人工填报 SYSTEM_DOCKING:系统对接
   */
  @NotNull(message = "计算数据来源不能为空")
  @ApiModelProperty("计算数据来源")
  private String calculateDataSource;

  /**
   * 系统对接计算点 CALCULATE:计算实际值 SCORE_AFTER_CALCULATE:计算实际值得分
   */
  @ApiModelProperty("系统对接计算点")
  private String systemDocking;

  /**
   * 是否已下发指标达成度数据 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否已下发指标达成度数据不能为空")
  @ApiModelProperty("是否已下发指标达成度数据")
  private String isAcceptObjectiveReachData;

  /**
   * 是否开启主观评分 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否开启主观评分不能为空")
  @ApiModelProperty("是否开启主观评分")
  private String isSubjectiveScoring;

  /**
   * 是否开启量化客观评分 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否开启量化客观评分不能为空")
  @ApiModelProperty("是否开启量化客观评分")
  private String isObjectiveQuantization;

  /**
   * 是否开启预算 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否开启预算不能为空")
  @ApiModelProperty("是否开启预算")
  private String isUseBudget;

  /**
   * 是否开启预算末级个人汇报 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否开启预算末级个人汇报不能为空")
  @ApiModelProperty("是否开启预算末级个人汇报")
  private String isOpenBudgetManualReport;

  /**
   * 是否开启自定义汇报 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否开启自定义汇报不能为空")
  @ApiModelProperty("是否开启自定义汇报")
  private String isOpenCustomReport;

  /**
   * 分工末级责任主体设置 FINAL_DEPARTMENT:末级部门 FINAL_PERSON:末级个人
   */
  @ApiModelProperty("分工末级责任主体设置")
  private String lasttLiableSubject;

  /**
   * 与父级责任主体是否相同 TRUE:是 FALSE:否
   */
  @NotNull(message = "与父级责任主体是否相同不能为空")
  @ApiModelProperty("与父级责任主体是否相同")
  private String andParentBodyIsIdentical;

  /**
   * 冗余目标ID
   */
  @NotNull(message = "冗余目标ID不能为空")
  @ApiModelProperty("冗余目标ID")
  private String targetId;

  /**
   * 部门根节点ID
   */
  @ApiModelProperty("部门根节点ID")
  private String deptRootNodeId;

  /**
   * 虚拟组织下部门ID
   */
  @ApiModelProperty("虚拟组织下部门ID")
  private String deptId;

  /**
   * 虚拟组织成员就职记录ID
   */
  @ApiModelProperty("虚拟组织成员就职记录ID")
  private String virtualOrgInductionRecordId;

  /**
   * 冗余评价模板ID
   */
  @NotNull(message = "冗余评价模板ID不能为空")
  @ApiModelProperty("冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
   */
  @NotNull(message = "周期模式类型编码不能为空")
  @ApiModelProperty("周期模式类型编码")
  private String periodicModeTypeCode;

  /**
   * 上级被评对象目标周期ID
   */
  @NotNull(message = "上级被评对象目标周期ID不能为空")
  @ApiModelProperty("上级被评对象目标周期ID")
  private String parentvaObjTargetCycleId;

  /**
   * 父级内容表类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表
   */
  @NotNull(message = "父级内容表类型编码不能为空")
  @ApiModelProperty("父级内容表类型编码")
  private String parentTableTypeCode;

  /**
   * 父级内容表主键ID
   */
  @NotNull(message = "父级内容表主键ID不能为空")
  @ApiModelProperty("父级内容表主键ID")
  private String parentTargetContId;

  /**
   * 批次现状
   */
  @ApiModelProperty("批次现状")
  private String batchCurrentStatus;

  /**
   * 批次标识
   */
  @NotNull(message = "批次标识不能为空")
  @ApiModelProperty("批次标识")
  private String batchCode;

  /**
   * 用途类型编码
   */
  @NotNull(message = "用途类型编码不能为空")
  @ApiModelProperty("用途类型编码")
  private String useTypeCode;

}
